import axios from 'axios'
import { Message,MessageBox } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
/* eslint-disable */
// create an axios instance
const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 1000 * 10 // request timeout
})

// console.log('request.js interceptors 拦截器'+getToken())

// request interceptor
service.interceptors.request.use(
  config => {
    // config.headers['Authorization'] = 'bearer 8'
    if (store.getters.token) {
      // config.headers['Authorization'] = 'bearer 8'
        config.headers['Authorization'] = 'bearer ' + getToken() // 让每个请求携带自定义token 服务器判断用户登录信息, 请根据实际情况自行修改
    }
      // console.log('=====url: '+config.url);
    return config
  },
  error => {
    // Do something with request error
    // console.log(error) // for debug
    Promise.reject(error)
  }
)

// response响应拦截器 接收返回的消息
service.interceptors.response.use(response => {
  /**
   * code为非20000是抛错 可结合自己业务进行修改
   */
  /*        }).then(res=>{
              let re=res.data;
              if(re.success===true){
                  this.$store.state.ACCESS_TOKEN=re.data.access_token;
                  setToken(re.data.access_token);

                  this.$Message.success('登录成功');
                  this.loading = false;
                  this.$router.push({ path: '/' });
              }else{
                  // console.log(res);
                  // console.log(err);
                  this.$Message.error(res.message);
                  this.loading = false;
              }
          }).catch(err=>{
              // console.log("error1:"+err);
              this.$message.error('用户名或密码不正确!');
              this.loading = false;
          });*/
  const res = response.data
  // // console.log('接口调用返回');
  // if (res.success !== true) {
  // USER_NOT_AUTHORITY(10040,"该用户无此权限"),
  //     API_LOSE_AUTHENTICATION(10022,"身份认证失效")
  // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
  if (res.code === 10022) {
    // MessageBox.confirm('你已被登出，取消继续留在该页面，确定重新登录!', '确定登出', {
    MessageBox.confirm('该帐号已在其它地方登录，取消继续留在该页面，确定重新登录!', {
      confirmButtonText: '重新登录',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {
      store.dispatch('FedLogOut').then(() => {
        location.reload()// 为了重新实例化vue-router对象 避免bug
      })
    })
  }

  if (res.code !== 0 && res.code != 20060) {
    Message({
      message: res.code + '    ' + res.message,
      type: 'error',
      duration: 2 * 1000
    });

    return Promise.reject('error')
  } else {
    // console.log('登录成功!');
    /*        Message({
                message: '登录成功!',
                type: 'success',
                duration: 2 * 1000
            });*/
    return response.data //成功,返回参数
  }
}, error => {
  console.log('err' + error)// for debug
  Message({
    message: error.message,
    type: 'error',
    duration: 2 * 1000
  })
  return Promise.reject(error)
})

export default service
